home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / c / pmm / developer / include / intuisup_link.h < prev    next >
C/C++ Source or Header  |  1999-06-14  |  27KB  |  562 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: intuisup.h
  6.  *    Created ..: Sunday 22-Dec-91 20:34:40
  7.  *    Revision .: 14
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    14-Sep-92   Torsten Jürgeleit      open_window(): new flag to prevent
  12.  *                       adding of inner window offsets
  13.  *    08-Aug-92   Torsten Jürgeleit      new flags
  14.  *                       GADGET_DATA_FLAG_INPUT_CENTER/RIGHT
  15.  *    06-Aug-92   Torsten Jürgeleit      new flag
  16.  *                       GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR
  17.  *    28-Jul-92   Torsten Jürgeleit      different centering types for
  18.  *                       requesters
  19.  *    28-Jul-92   Torsten Jürgeleit      open window centered over position
  20.  *                       of mouse pointer
  21.  *    11-Jul-92   Torsten Jürgeleit      use RAWKEY instead of VANILLAKEY
  22.  *                       for gadget hotkeys
  23.  *    01-Jul-92   Torsten Jürgeleit      added support for custom slider
  24.  *                       knob image
  25.  *    03-Jun-92   Torsten Jürgeleit      alternate color for menu item texts
  26.  *    14-Apr-92   Torsten Jürgeleit      neq flag GADGET_DATA_FLAG_NO_CLEAR
  27.  *    12-May-92   Torsten Jürgeleit      text colors for IClearWindow()
  28.  *    30-Apr-92   Torsten Jürgeleit      rasters for IClearWindow() and
  29.  *                       requesters
  30.  *    01-Apr-92   Torsten Jürgeleit      changed parameter size of
  31.  *                       IModifyGadget() for new value of
  32.  *                       USE_CURRENT_VALUE (1L << 31)
  33.  *    31-Mar-92   Torsten Jürgeleit      changed USE_CURRENT_VALUE from ~0L
  34.  *                       to (1L << 31)
  35.  *    21-Mar-92   Torsten Jürgeleit      flags for converting numbers with
  36.  *                       string gadgets
  37.  *    22-Dec-91   Torsten Jürgeleit      Created this file!
  38.  *
  39.  ****************************************************************************
  40.  *
  41.  *    Includes, defines, structures, prototypes and pragmas for IntuiSup
  42.  *    library
  43.  *
  44.  * $Revision Header ********************************************************/
  45.  
  46. #ifndef    LIBRARIES_INTUISUP_H
  47. #define    LIBRARIES_INTUISUP_H
  48.  
  49.     /* Includes */
  50.  
  51. #ifndef    EXEC_TYPES_H
  52. #include <exec/types.h>
  53. #endif    /* EXEC_TYPES_H */
  54.  
  55. #ifndef    EXEC_LISTS_H
  56. #include <exec/lists.h>
  57. #endif    /* EXEC_LISTS_H */
  58.  
  59. #ifndef    LIBRARIES_DISKFONT_H
  60. #include <libraries/diskfont.h>
  61. #endif    /* LIBRARIES_DISKFONT_H */
  62.  
  63. #ifndef    INTUITION_INTUITION_H
  64. #include <intuition/intuition.h>
  65. #endif    /* INTUITION_INTUITION_H */
  66.  
  67.     /* Defines for render */
  68.  
  69. #define RENDER_INFO_FLAG_INNER_WINDOW        (USHORT)(1 << 0)    /* use upper left corner of inner window as location (0,0) */
  70. #define RENDER_INFO_FLAG_BACK_FILL        (USHORT)(1 << 1)    /* fill window back ground with different color */
  71. #define RENDER_INFO_FLAG_AVAIL_FONTS        (USHORT)(1 << 2)    /* scan available fonts and use this list for IAskFont/IOpenFont */
  72.  
  73. #define INTUISUP_DATA_END    (USHORT)0       /* mark end of data arry */
  74.  
  75.     /* Defines for open window flags */
  76.  
  77. #define OPEN_WINDOW_FLAG_CENTER_SCREEN        (1 << 0)   /* center window on screen */
  78. #define OPEN_WINDOW_FLAG_RENDER_PENS        (1 << 1)   /* use render pens for detail and backfill pen */
  79. #define OPEN_WINDOW_FLAG_CENTER_MOUSE        (1 << 2)   /* center window over current position of mouse pointer */
  80. #define OPEN_WINDOW_FLAG_NO_INNER_WINDOW    (1 << 3)   /* don't add inner window offsets for RENDER_INFO_FLAG_INNER_WINDOW */
  81.  
  82.     /* Defines for clear window flags */
  83.  
  84. #define CLEAR_WINDOW_FLAG_CUSTOM_DRAW_MODE    (1 << 0)   /* don't change draw mode */
  85. #define CLEAR_WINDOW_FLAG_CUSTOM_COLOR        (1 << 1)   /* don't change background color */
  86. #define CLEAR_WINDOW_FLAG_NORMAL_COLOR        (1 << 2)   /* use normal background color */
  87. #define CLEAR_WINDOW_FLAG_USE_RASTER        (1 << 3)   /* use standard raster for window background */
  88. #define CLEAR_WINDOW_FLAG_ABSOLUTE_POS        (1 << 4)   /* don't add window border offset to given upper left position */
  89. #define CLEAR_WINDOW_FLAG_TEXT1_COLOR        (1 << 5)   /* use text color 1 */
  90. #define CLEAR_WINDOW_FLAG_TEXT2_COLOR        (1 << 6)   /* use text color 2 */
  91.  
  92.     /* Defines for texts */
  93.  
  94. #define TEXT_DATA_TYPE_TEXT            (USHORT)1
  95. #define TEXT_DATA_TYPE_NUM_UNSIGNED_DEC        (USHORT)2
  96. #define TEXT_DATA_TYPE_NUM_SIGNED_DEC        (USHORT)3
  97. #define TEXT_DATA_TYPE_NUM_HEX            (USHORT)4
  98. #define TEXT_DATA_TYPE_NUM_BIN            (USHORT)5
  99.  
  100. #define TEXT_DATA_FLAG_BOLD            (USHORT)(1 << 0)
  101. #define TEXT_DATA_FLAG_ITALIC            (USHORT)(1 << 1)
  102. #define TEXT_DATA_FLAG_UNDERLINED        (USHORT)(1 << 2)
  103. #define TEXT_DATA_FLAG_ABSOLUTE_POS        (USHORT)(1 << 3)    /* absolute text pos given - don't add border offsets */
  104. #define TEXT_DATA_FLAG_CENTER            (USHORT)(1 << 4)    /* center text with in window width */
  105. #define TEXT_DATA_FLAG_PLACE_LEFT        (USHORT)(1 << 5)    /* place text left of given left edge */
  106. #define TEXT_DATA_FLAG_COLOR2            (USHORT)(1 << 6)    /* use 2nd text render pen */
  107. #define TEXT_DATA_FLAG_COMPLEMENT        (USHORT)(1 << 7)    /* use complement of front and back pen */
  108. #define TEXT_DATA_FLAG_BACK_FILL        (USHORT)(1 << 8)    /* use draw mode JAM2 to fill text background with ri_BackPen */
  109. #define TEXT_DATA_FLAG_NO_PRINT            (USHORT)(1 << 9)    /* don't print text - only calc width */
  110. #define TEXT_DATA_FLAG_NUM_IDENTIFIER        (USHORT)(1 << 10)    /* convert number with normal (assmebler style) leading identifier `$' or `%' */
  111. #define TEXT_DATA_FLAG_NUM_C_STYLE        (USHORT)(1 << 11)    /* use C style identifier `0x' for hex numbers */
  112. #define TEXT_DATA_FLAG_NUM_LEADING_ZEROES    (USHORT)(1 << 12)    /* convert number includeing leading zeroes */
  113. #define TEXT_DATA_FLAG_NUM_UPPER_CASE        (USHORT)(1 << 13)    /* use upper case characters for hex number */
  114.  
  115. #define CONVERT_FLAG_IDENTIFIER            (USHORT)(1 << 0)    /* convert number with normal (assmebler style) leading identifier `$' or `%' */
  116. #define CONVERT_FLAG_C_STYLE            (USHORT)(1 << 1)    /* use C style identifier `0x' for hex numbers */
  117. #define CONVERT_FLAG_LEADING_ZEROES        (USHORT)(1 << 2)    /* convert number includeing leading zeroes */
  118. #define CONVERT_FLAG_UPPER_CASE            (USHORT)(1 << 3)    /* use upper case characters for hex number */
  119.  
  120.     /* Structures for texts */
  121.  
  122. struct TextData {
  123.     USHORT    td_Type;
  124.     USHORT    td_Flags;
  125.     SHORT    td_LeftEdge;
  126.     SHORT    td_TopEdge;
  127.     BYTE    *td_Text;
  128.     struct TextAttr  *td_TextAttr;
  129. };
  130.     /* Defines for borders */
  131.  
  132. #define BORDER_DATA_TYPE_BOX1_OUT    (USHORT)1
  133. #define BORDER_DATA_TYPE_BOX1_IN    (USHORT)2
  134. #define BORDER_DATA_TYPE_BOX2_OUT    (USHORT)3
  135. #define BORDER_DATA_TYPE_BOX2_IN    (USHORT)4
  136.  
  137.     /* Structures for borders */
  138.  
  139. struct BorderData {
  140.     USHORT    bd_Type;
  141.     SHORT    bd_LeftEdge;
  142.     SHORT    bd_TopEdge;
  143.     USHORT    bd_Width;
  144.     USHORT    bd_Height;
  145. };
  146.     /* Defines for gadgets */
  147.  
  148. #define ISUP_ID        ((ULONG)'I' << 24 | (ULONG)'S' << 16 | 'U' << 8 | 'P')
  149.  
  150. #define GADGET_DATA_TYPE_BUTTON        (USHORT)1    /* button gadget */
  151. #define GADGET_DATA_TYPE_CHECK        (USHORT)2    /* checkbox gadget */
  152. #define GADGET_DATA_TYPE_MX        (USHORT)3    /* mutual exclude gadget */
  153. #define GADGET_DATA_TYPE_STRING        (USHORT)4    /* string input gadget */
  154. #define GADGET_DATA_TYPE_INTEGER    (USHORT)5    /* integer input gadget */
  155. #define GADGET_DATA_TYPE_SLIDER        (USHORT)6    /* slider gadget */
  156. #define GADGET_DATA_TYPE_SCROLLER    (USHORT)7    /* scroller gadget */
  157. #define GADGET_DATA_TYPE_CYCLE        (USHORT)8    /* cycle gadget */
  158. #define GADGET_DATA_TYPE_COUNT        (USHORT)9    /* count gadget */
  159. #define GADGET_DATA_TYPE_LISTVIEW    (USHORT)10    /* list view gadget */
  160. #define GADGET_DATA_TYPE_PALETTE    (USHORT)11    /* palette gadget */
  161.  
  162. #define GADGET_DATA_FLAG_DISABLED        (1L << 0)    /* gadget disabled (ghosted) - default enabled */
  163. #define GADGET_DATA_FLAG_NO_BORDER        (1L << 1)    /* no gadget border - default with border */
  164. #define GADGET_DATA_FLAG_HIGH_COMP        (1L << 2)    /* highliting by complement - default by select border */
  165. #define GADGET_DATA_FLAG_ORIENTATION_VERT    (1L << 3)    /* vertical orientation - default horizontal */
  166. #define GADGET_DATA_FLAG_HOTKEY            (1L << 4)    /* hotkey given - default none */
  167. #define GADGET_DATA_FLAG_NO_TEXT_OUTPUT        (1L << 5)    /* no text output, but scan gadget text for hotkey */
  168. #define GADGET_DATA_FLAG_TEXT_LEFT        (1L << 6)    /* place text left of gadget */
  169. #define GADGET_DATA_FLAG_TEXT_RIGHT        (1L << 7)    /* place text right of gadget */
  170. #define GADGET_DATA_FLAG_TEXT_ABOVE        (1L << 8)    /* place text above of gadget */
  171. #define GADGET_DATA_FLAG_TEXT_BELOW        (1L << 9)    /* place text below of gadget */
  172. #define GADGET_DATA_FLAG_TEXT_COLOR2        (1L << 10)    /* use 2nd text render pen for gadget text */
  173. #define GADGET_DATA_FLAG_BUTTON_TOGGLE        (1L << 11)    /* button gadgets: toggle button - default no toggle */
  174. #define GADGET_DATA_FLAG_BUTTON_IMAGE        (1L << 12)    /* button gadgets: render image - default no image */
  175. #define GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE    (1L << 13)    /* input gadgets: acivate after GADGETUP next or previous input gadget */
  176. #define GADGET_DATA_FLAG_STRING_UNSIGNED_DEC    (1L << 14)    /* string gadgets: input default no pointer to string but an unsigned decimal number */
  177. #define GADGET_DATA_FLAG_STRING_SIGNED_DEC    (1L << 15)    /* string gadgets: input default no pointer to string but an signed decimal number */
  178. #define GADGET_DATA_FLAG_STRING_HEX        (1L << 16)    /* string gadgets: input default no pointer to string but an hex number */
  179. #define GADGET_DATA_FLAG_STRING_BIN        (1L << 17)    /* string gadgets: input default no pointer to string but an binary number */
  180. #define GADGET_DATA_FLAG_SCROLLER_NO_ARROWS    (1L << 18)    /* scroller gadget: no arrows - default with arrows */
  181. #define GADGET_DATA_FLAG_COUNT_SIGNED_DEC    (1L << 19)    /* count gadget: signed dec - default unsigned dec */
  182. #define GADGET_DATA_FLAG_LISTVIEW_READ_ONLY    (1L << 20)    /* list view gadget: read only - default selection enabled */
  183. #define GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED (1L << 21)    /* list view gadget: show last selected entry - default no */
  184. #define GADGET_DATA_FLAG_PALETTE_NO_INDICATOR    (1L << 22)    /* palette gadget: no current color indicator - default with indicator */
  185. #define GADGET_DATA_FLAG_PALETTE_INDICATOR_TOP    (1L << 23)    /* palette gadget: place indicator at top - default at left */
  186. #define GADGET_DATA_FLAG_MOVE_POINTER        (1L << 24)    /* move mouse pointer to center of this gadget */
  187. #define GADGET_DATA_FLAG_NO_CLEAR        (1L << 25)    /* don't clear area occupied by this gadget before drawing */
  188. #define GADGET_DATA_FLAG_SLIDER_IMAGE        (1L << 26)    /* kludge to define image for knob of proportional gadget in gd_TextAttr (if text then default TextAttr used) */
  189. #define GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR    (1L << 27)    /* list view gadget: if first char of an entry text equals <Ctrl A> ($01) then this char will be skipped and the rest of this entry text will be printed in a different color */
  190. #define GADGET_DATA_FLAG_INPUT_CENTER        (1L << 28)    /* input gadgets: center input string within gadget */
  191. #define GADGET_DATA_FLAG_INPUT_RIGHT        (1L << 29)    /* input gadgets: right justify input string within gadget */
  192.  
  193. #define GADGET_IDCMP_FLAGS_BUTTON    (GADGETUP | RAWKEY)
  194. #define GADGET_IDCMP_FLAGS_CHECK    (GADGETDOWN | RAWKEY)
  195. #define GADGET_IDCMP_FLAGS_MX        (GADGETDOWN | RAWKEY)
  196. #define GADGET_IDCMP_FLAGS_STRING    (GADGETUP | RAWKEY)
  197. #define GADGET_IDCMP_FLAGS_INTEGER    (GADGETUP | RAWKEY)
  198. #define GADGET_IDCMP_FLAGS_SLIDER    (GADGETUP | MOUSEMOVE | RAWKEY)
  199. #define GADGET_IDCMP_FLAGS_SCROLLER    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | RAWKEY)
  200. #define GADGET_IDCMP_FLAGS_CYCLE    (GADGETUP | RAWKEY)
  201. #define GADGET_IDCMP_FLAGS_COUNT    (GADGETDOWN | GADGETUP | MOUSEMOVE | RAWKEY)
  202. #define GADGET_IDCMP_FLAGS_LISTVIEW    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | RAWKEY)
  203. #define GADGET_IDCMP_FLAGS_PALETTE    (GADGETUP | RAWKEY)
  204. #define GADGET_IDCMP_FLAGS_ALL        (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | RAWKEY)
  205.  
  206. #define INPUT_AUTO_ACTIVATE(next,prev)    ((((LONG)next) << 16) | prev)    /* macro for (gd_InputActivateNext | gd_InpuActivatePrev) */
  207.  
  208. #define USE_CURRENT_VALUE    (1L << 31)    /* used for set_gadget_attributes() to indicate data for which to use the current value */
  209.  
  210.     /* Structures for gadgets */
  211.  
  212. struct GadgetData {
  213.     ULONG    gd_Type;
  214.     ULONG    gd_Flags;
  215.     USHORT    gd_LeftEdge;
  216.     USHORT    gd_TopEdge;
  217.     USHORT    gd_Width;
  218.     USHORT    gd_Height;
  219.     BYTE    *gd_Text;
  220.     struct TextAttr  *gd_TextAttr;
  221.     union    {
  222.         struct {    /* standard data struct */
  223.         LONG    gd_Data1;
  224.         LONG    gd_Data2;
  225.         VOID    *gd_Data3;
  226.         } gd_Data;
  227.         struct {    /* for button gadgets */
  228.         ULONG    gd_ButtonSelected;        /* selection state for toggle buttons - ZERO = unselected, non ZERO = selected */
  229.         struct Image  *gd_ButtonNormalRender;    /* normal render image */
  230.         struct Image  *gd_ButtonSelectRender;    /* select render image */
  231.         } gd_ButtonData;
  232.         struct {    /* for check gadgets */
  233.         ULONG    gd_CheckSelected;    /* selection state - ZERO = unselected, non ZERO = selected */
  234.         ULONG    gd_CheckPad1;
  235.         ULONG    gd_CheckPad2;
  236.         } gd_CheckData;
  237.         struct {    /* for mutual exclude gadgets */
  238.         ULONG    gd_MXSpacing;        /* pixel spacing between MX gadgets */
  239.         ULONG    gd_MXActiveEntry;    /* num of active entry from text array */
  240.         BYTE    **gd_MXTextArray;    /* ptr to MX text ptr array */
  241.         } gd_MXData;
  242.         struct {    /* for string and integer gadgets */
  243.         ULONG    gd_InputLen;        /* len of input buffer */
  244.         USHORT    gd_InputActivateNext;    /* num of next string/num gadget to activate */
  245.         USHORT    gd_InputActivatePrev;    /* num of previous string/num gadget to activate */
  246.         BYTE    *gd_InputDefault;    /* string: default text [syntax: "text"] */
  247.                         /* integer: default number [syntax: (VOID *)num] */
  248.         } gd_InputData;
  249.         struct {    /* for slider gadgets */
  250.         LONG    gd_SliderMin;        /* min level */
  251.         LONG    gd_SliderMax;        /* max level */
  252.         LONG    gd_SliderLevel;        /* current slider level */
  253.         } gd_SliderData;
  254.         struct {    /* for scroller gadgets */
  255.         ULONG    gd_ScrollerVisible;    /* visible entries */
  256.         ULONG    gd_ScrollerTotal;    /* total entries */
  257.         ULONG    gd_ScrollerTop;        /* current top entry */
  258.         } gd_ScrollerData;
  259.         struct {    /* for cycle gadget */
  260.         ULONG    gd_CycleSpacing;    /* pixel spacing between pop up cycle list entries */
  261.         ULONG    gd_CycleActive;        /* num of current cycle text ptr array entry */
  262.         BYTE    **gd_CycleTextArray;    /* ptr to cycle text ptr array */
  263.         } gd_CycleData;
  264.         struct {    /* for count gadget */
  265.         ULONG    gd_CountMin;        /* min value */
  266.         ULONG    gd_CountMax;        /* max value */
  267.         ULONG    gd_CountValue;    /* current count value */
  268.         } gd_CountData;
  269.         struct {    /* for list view gadget */
  270.         ULONG    gd_ListViewSpacing;    /* pixel spacing between list view entries */
  271.         ULONG    gd_ListViewTop;        /* current top entry */
  272.         struct List  *gd_ListViewList;    /* current list ptr */
  273.         } gd_ListViewData;
  274.         struct {    /* for palette gadget */
  275.         ULONG    gd_PaletteDepth;    /* num of bitplanes for palette */
  276.         ULONG    gd_PaletteColorOffset;    /* first color of palette */
  277.         ULONG    gd_PaletteActiveColor;    /* selected color */
  278.         } gd_PaletteData;
  279.     } gd_SpecialData;
  280. };
  281.     /* Defines for auto request */
  282.  
  283. #define AUTO_REQ_FLAG_BACK_FILL        (USHORT)(1 << 0)
  284. #define AUTO_REQ_FLAG_RENDER_PENS    (USHORT)(1 << 1)
  285. #define AUTO_REQ_FLAG_TEXT_CENTER    (USHORT)(1 << 2)
  286. #define AUTO_REQ_FLAG_TEXT_COLOR2    (USHORT)(1 << 3)
  287. #define AUTO_REQ_FLAG_HOTKEY        (USHORT)(1 << 4)
  288. #define AUTO_REQ_FLAG_BEEP        (USHORT)(1 << 5)
  289. #define AUTO_REQ_FLAG_MOVE_POINTER_POS    (USHORT)(1 << 6)
  290. #define AUTO_REQ_FLAG_MOVE_POINTER_NEG    (USHORT)(1 << 7)
  291. #define AUTO_REQ_FLAG_DRAW_RASTER    (USHORT)(1 << 8)    /* draw raster around text area */
  292. #define AUTO_REQ_FLAG_CENTER_MOUSE    (USHORT)(1 << 9)    /* center last gadget of auto requester over current position of mouse pointer */
  293.  
  294.     /* Defines for requester */
  295.  
  296. #define REQ_DATA_FLAG_BACK_FILL        (1L << 0)
  297. #define REQ_DATA_FLAG_RENDER_PENS    (1L << 1)
  298. #define REQ_DATA_FLAG_INNER_WINDOW    (1L << 2)
  299. #define REQ_DATA_FLAG_AVAIL_FONTS    (1L << 3)
  300. #define REQ_DATA_FLAG_CENTER_SCREEN    (1L << 4)    /* center requester on window's screen */
  301. #define REQ_DATA_FLAG_DRAG_GADGET    (1L << 5)
  302. #define REQ_DATA_FLAG_DEPTH_GADGET    (1L << 6)
  303. #define REQ_DATA_FLAG_DRAW_RASTER    (1L << 7)    /* draw raster between FIRST BORDER and window border - FIRST BORDER will not be used further */
  304. #define REQ_DATA_FLAG_CENTER_WINDOW    (1L << 8)    /* center requester on window */
  305. #define REQ_DATA_FLAG_CENTER_MOUSE    (1L << 9)    /* center requester over current position of mouse pointer */
  306.  
  307.     /* Structures for requester */
  308.  
  309. struct RequesterData {
  310.     SHORT    rd_LeftEdge;
  311.     SHORT    rd_TopEdge;
  312.     SHORT    rd_Width;
  313.     SHORT    rd_Height;
  314.     ULONG    rd_Flags;
  315.     BYTE    *rd_Title;
  316.     struct TextData    *rd_Texts;
  317.     struct BorderData  *rd_Borders;
  318.     struct GadgetData  *rd_Gadgets;
  319. };
  320.     /* Defines for menus */
  321.  
  322. #define MENU_DATA_TYPE_TITLE        (USHORT)1
  323. #define MENU_DATA_TYPE_ITEM        (USHORT)2
  324. #define MENU_DATA_TYPE_SUBITEM        (USHORT)3
  325.  
  326. #define MENU_DATA_FLAG_DISABLED        (USHORT)(1 << 0)    /* disable menu or menu item */
  327. #define MENU_DATA_FLAG_ATTRIBUTE    (USHORT)(1 << 1)    /* attribute menu item */
  328. #define MENU_DATA_FLAG_SELECTED        (USHORT)(1 << 2)    /* selected attribute menu item */
  329. #define MENU_DATA_FLAG_EMPTY_LINE    (USHORT)(1 << 3)    /* insert empty line before this item */
  330. #define MENU_DATA_FLAG_HIGH_NONE    (USHORT)(1 << 4)    /* no highliting */
  331. #define MENU_DATA_FLAG_HIGH_BOX        (USHORT)(1 << 5)    /* highliting with box, otherwise with complement */
  332. #define MENU_DATA_FLAG_TEXT_COLOR2    (USHORT)(1 << 6)    /* alternate color for item text */
  333.  
  334.     /* Structures for menus */
  335.  
  336. struct MenuData {
  337.     USHORT    md_Type;
  338.     USHORT    md_Flags;
  339.     BYTE    *md_Name;
  340.     BYTE    *md_CommandKey;
  341.     ULONG    md_MutualExclude;
  342. };
  343.     /* Defines for text file */
  344.  
  345. #define TEXT_FILE_FLAG_TRIM_LINE        (USHORT)(1 << 0)    /* strip leading and trailing white space */
  346. #define TEXT_FILE_FLAG_SKIP_COMMENTS        (USHORT)(1 << 1)    /* skip C style comments */
  347. #define TEXT_FILE_FLAG_SKIP_EMPTY_LINES        (USHORT)(1 << 2)    /* skip empty lines */
  348. #define TEXT_FILE_FLAG_LINE_CONTINUATION    (USHORT)(1 << 3)    /* continue line with last character '\' in next line */
  349.  
  350. #define TEXT_FILE_STATUS_NORMAL            (SHORT)0
  351. #define TEXT_FILE_STATUS_EOF            (SHORT)1
  352.  
  353. #define TEXT_FILE_ERROR_NO_FILE_DATA        (SHORT)-1
  354. #define TEXT_FILE_ERROR_LINE_TOO_LONG        (SHORT)-2
  355. #define TEXT_FILE_ERROR_NO_COMMENT_END        (SHORT)-3
  356. #define TEXT_FILE_ERROR_READ_FAILED        (SHORT)-4
  357.  
  358.     /* Structures for text file */
  359.  
  360. struct FileData {
  361.     BYTE    *fd_Line;
  362.     USHORT    fd_LineLen;
  363.     USHORT    fd_LineNum;
  364. };
  365.     /* Structures for mouse pointer */
  366.  
  367. struct PointerData {
  368.     UBYTE    pd_Width;
  369.     UBYTE    pd_Height;
  370.     BYTE    pd_XOffset;
  371.     BYTE    pd_YOffset;
  372.     UWORD    *pd_Data;
  373. };
  374.     /* Defines for functions */
  375.  
  376. #define IGetRenderInfo(screen,flags)    get_render_info(screen, flags)
  377. #define IFreeRenderInfo(ri)        free_render_info(ri)
  378. #define IOpenWindow(ri,nw,flags)    open_window(ri,nw,flags)
  379. #define IClearWindow(ri,win,left,top,width,height,flags)    clear_window(ri,win,left,top,width,height,flags)
  380. #define ICloseWindow(win,more_windows)    close_window(win,more_windows)
  381. #define IAvailFonts(ri)            avail_fonts(ri)
  382. #define IAskFont(ri,ta)            ask_font(ri,ta)
  383. #define IOpenFont(ri,ta)        open_font(ri,ta)
  384.  
  385. #define IDisplayTexts(ri,win,td,hoffset,voffset,language_text_array)    display_texts(ri,win,td,hoffset,voffset,language_text_array)
  386. #define IPrintText(ri,win,text,left,top,type,flags,text_attr)    print_text(ri,win,text,left,top,type,flags,text_attr)
  387. #define IConvertUnsignedDec(num,buffer,flags)    convert_unsigned_dec(num,buffer,flags)
  388. #define IConvertSignedDec(num,buffer,flags)    convert_signed_dec(num,buffer,flags)
  389. #define IConvertHex(num,buffer,flags)        convert_hex(num,buffer,flags)
  390. #define IConvertBin(num,buffer,flags)        convert_bin(num,buffer,flags)
  391.  
  392. #define IDisplayBorders(ri,win,bd,hoffset,voffset)    display_borders(ri,win,bd,hoffset,voffset)
  393. #define IDrawBorder(ri,win,left,top,width,height,type)    draw_border(ri,win,left,top,width,height,type)
  394.  
  395. #define ICreateGadgets(ri,gd,hoffset,voffset,language_text_array)    create_gadgets(ri,gd,hoffset,voffset,language_text_array)
  396. #define IFreeGadgets(gl)        free_gadgets(gl)
  397. #define IDisplayGadgets(win, gl)    display_gadgets(win, gl)
  398. #define IRefreshGadgets(gl)        refresh_gadgets(gl)
  399. #define IModifyGadget(gl,entry,left,top,width,height)    modify_gadget(gl,entry,left,top,width,height)
  400. #define ISetGadgetAttributes(gl,data_entry,flag_mask,flag_bits,data1,data2,data3)    set_gadget_attributes(gl,data_entry,flag_mask,flag_bits,data1,data2,data3)
  401. #define IActivateInputGadget(gl,data_entry)    activate_input_gadget(gl,data_entry)
  402. #define IGadgetAddress(gl,data_entry)    gadget_address(gl,data_entry)
  403. #define IRemoveGadgets(gl)        remove_gadgets(gl)
  404. #define IGetMsg(uport)            get_msg(uport)
  405. #define IReplyMsg(imsg)            reply_msg(imsg)
  406. #define IConvertRawKeyToASCII(imsg)    cobvert_rawkey_to_ascii(imsg)
  407.  
  408. #define IAutoRequest(req_win,title,body_text,pos_text,neg_text,pos_idcmp_flags,neg_idcmp_flags,req_flags,language_text_array)    auto_request(req_win,title,body_text,pos_text,neg_text,pos_idcmp_flags,neg_idcmp_flags,req_flags,language_text_array)
  409. #define IDisplayRequester(req_win,rd,language_text_array)    display_requester(req_win,rd,language_text_array)
  410. #define IRemoveRequester(rl)        remove_requester(rl)
  411.  
  412. #define ICreateMenu(ri,win,md,ta,language_text_array)    create_menu(ri,win,md,ta,language_text_array)
  413. #define IAttachMenu(win,ml)        attach_menu(win,ml)
  414. #define IMenuItemAddress(ml,menu_num)    menu_item_address(ml,menu_num)
  415. #define IRemoveMenu(ml)            remove_menu(ml)
  416. #define IFreeMenu(ml)            free_menu(ml)
  417.  
  418. #define IOpenTextFile(name,read_buffer_size,line_buffer_size,flags)    open_text_file(name,read_buffer_size,line_buffer_size,flags)
  419. #define IReadTextLine(fd)        read_text_line(fd)
  420. #define ICloseTextFile(fd)        close_text_file(fd)
  421.  
  422. #define IBuildLanguageTextArray(name,entries)    build_language_text_array(name,entries)
  423. #define IGetLanguageText(text,text_array)    get_language_text(text,text_array)
  424. #define IFreeLanguageTextArray(text_array)    free_language_text_array(text_array)
  425.  
  426. #define IChangeMousePointer(win,pd)        change_mouse_pointer(win,pd,remove_gadgets,remove_gadgets)
  427. #define IRestoreMousePointer(win)        restore_mouse_pointer(win)
  428. #define IMoveMousePointer(win,x,y,button)    move_mouse_pointer(win,x,y,button)
  429.  
  430.     /* Prototypes */
  431.  
  432. APTR   get_render_info(struct Screen  *screen, USHORT flags);
  433. SHORT  calc_color_difference(SHORT color1, SHORT color2);
  434. VOID   free_render_info(APTR ri);
  435. struct Window  *open_window(APTR ri, struct NewWindow  *nw, USHORT flags);
  436. VOID   clear_window(APTR ri, struct Window  *win, USHORT left_edge,
  437.         USHORT top_edge, USHORT width, USHORT height, USHORT flags);
  438. VOID   close_window(struct Window  *win, BOOL more_windows);
  439. struct AvailFontsHeader  *avail_fonts(APTR ri);
  440. struct TextAttr          *ask_font(APTR ri, struct TextAttr  *ta);
  441. struct TextFont          *open_font(APTR ri, struct TextAttr  *ta);
  442.  
  443. VOID   display_texts(APTR ri, struct Window  *win, struct TextData  *td,
  444.           SHORT hoffset, SHORT voffset,    BYTE **language_text_array);
  445. USHORT print_text(APTR ri, struct Window  *win, BYTE *text,
  446.            USHORT left_edge, USHORT top_edge, USHORT type, USHORT flags,
  447.                            struct TextAttr  *text_attr);
  448. USHORT convert_unsigned_dec(ULONG num, BYTE *buffer, USHORT flags);
  449. USHORT convert_signed_dec(LONG num, BYTE *buffer, USHORT flags);
  450. USHORT convert_hex(ULONG num, BYTE *buffer, USHORT flags);
  451. USHORT convert_bin(ULONG num, BYTE *buffer, USHORT flags);
  452.  
  453. VOID   display_borders(APTR ri, struct Window  *win, struct BorderData  *bd,
  454.                           SHORT hoffset, SHORT voffset);
  455. VOID   draw_border(APTR ri, struct Window  *win, USHORT left_edge,
  456.          USHORT top_edge, USHORT width, USHORT height, USHORT type);
  457. BYTE   *init_border(APTR ri, BYTE *buffer, SHORT left_edge, SHORT top_edge,
  458.                   USHORT width, USHORT height, USHORT type);
  459.  
  460. APTR   create_gadgets(APTR ri, struct GadgetData  *gd, SHORT hoffset,
  461.                  SHORT voffset, BYTE **language_text_array);
  462. VOID   free_gadgets(APTR gl);
  463. VOID   display_gadgets(struct Window  *win, APTR gl);
  464. VOID   refresh_gadgets(APTR gl);
  465. VOID   modify_gadget(APTR gl, USHORT data_entry, LONG left_edge,
  466.                   LONG top_edge, ULONG width, ULONG height);
  467. ULONG  set_gadget_attributes(APTR gl, USHORT data_entry, ULONG flag_mask,
  468.             ULONG flag_bits, ULONG data1, ULONG data2, VOID *data3);
  469. VOID   activate_input_gadget(APTR gl, USHORT data_entry);
  470. struct Gadget  *gadget_address(APTR gl, USHORT data_entry);
  471. struct Window  *remove_gadgets(APTR gl);
  472. struct IntuiMessage  *get_msg(struct MsgPort  *uport);
  473. VOID   reply_msg(struct IntuiMessage  *imsg);
  474. UBYTE  convert_rawkey_to_ascii(struct IntuiMessage  *im);
  475.  
  476. BOOL   auto_request(struct Window  *req_win, BYTE *title, BYTE *body_text,
  477.                BYTE *pos_text, BYTE *neg_text, LONG pos_idcmp_flags,
  478.     LONG neg_idcmp_flags, USHORT req_flags, BYTE **language_text_array);
  479. APTR   display_requester(struct Window  *req_win,
  480.              struct RequesterData  *rd, BYTE **language_text_array);
  481. VOID   remove_requester(APTR rl);
  482.  
  483. APTR   create_menu(APTR ri, struct Window  *win, struct MenuData  *md,
  484.               struct TextAttr  *ta, BYTE **language_text_array);
  485. VOID   attach_menu(struct Window  *win, APTR ml);
  486. struct MenuItem  *menu_item_address(APTR ml, USHORT menu_num);
  487. struct Window    *remove_menu(APTR ml);
  488. VOID   free_menu(APTR ml);
  489.  
  490. struct FileData  *open_text_file(BYTE *name, USHORT read_buffer_size,
  491.                      USHORT line_buffer_size, USHORT flags);
  492. SHORT  read_text_line(struct FileData  *fd);
  493. VOID   close_text_file(struct FileData  *fd);
  494.  
  495. BYTE   **build_language_text_array(BYTE *name, USHORT entries);
  496. BYTE   *get_language_text(BYTE *text, BYTE **text_array);
  497. VOID   free_language_text_array(BYTE **text_array);
  498.  
  499. VOID   change_mouse_pointer(struct Window  *win, struct PointerData  *pd,
  500.                                BOOL remove_gadgets);
  501. VOID   restore_mouse_pointer(struct Window  *win);
  502. VOID   move_mouse_pointer(struct Window  *win, SHORT x, SHORT y, BOOL button);
  503.  
  504.     /* Pragmas */
  505.  
  506. #pragma intfunc(get_render_info(a0,d0))
  507. #pragma intfunc(calc_color_difference(d0,d1))
  508. #pragma intfunc(free_render_info(a0))
  509. #pragma intfunc(open_window(a0,a1,d0))
  510. #pragma intfunc(clear_window(a0,a1,d0,d1,d2,d3,d4))
  511. #pragma intfunc(close_window(a0,d0))
  512. #pragma intfunc(avail_fonts(a0))
  513. #pragma intfunc(ask_font(a0,a1))
  514. #pragma intfunc(open_font(a0,a1))
  515.  
  516. #pragma intfunc(display_texts(a0,a1,a2,d0,d1,a3))
  517. #pragma intfunc(print_text(a0,a1,a2,d0,d1,d2,d3,a3))
  518. #pragma intfunc(convert_unsigned_dec(d0,a0,d1))
  519. #pragma intfunc(convert_signed_dec(d0,a0,d1))
  520. #pragma intfunc(convert_hex(d0,a0,d1))
  521. #pragma intfunc(convert_bin(d0,a0,d1))
  522.  
  523. #pragma intfunc(display_borders(a0,a1,a2,d0,d1))
  524. #pragma intfunc(draw_border(a0,a1,d0,d1,d2,d3,d4))
  525. #pragma intfunc(init_border(a0,a1,d0,d1,d2,d3,d4))
  526.  
  527. #pragma intfunc(create_gadgets(a0,a1,d0,d1,a2))
  528. #pragma intfunc(free_gadgets(a0))
  529. #pragma intfunc(display_gadgets(a0,a1))
  530. #pragma intfunc(refresh_gadgets(a0))
  531. #pragma intfunc(set_gadget_attributes(a0,d0,d1,d2,d3,d4,a1))
  532. #pragma intfunc(activate_input_gadget(a0,d0))
  533. #pragma intfunc(gadget_address(a0,d0))
  534. #pragma intfunc(remove_gadgets(a0))
  535. #pragma intfunc(get_msg(a0))
  536. #pragma intfunc(reply_msg(a0))
  537. #pragma intfunc(convert_rawkey_to_ascii(a0))
  538.  
  539. #pragma intfunc(auto_request(a0,a1,a2,a3,d0,d1,d2,d3,d4))
  540. #pragma intfunc(display_requester(a0,a1,a2))
  541. #pragma intfunc(remove_requester(a0))
  542.  
  543. #pragma intfunc(create_menu(a0,a1,a2,a3,d0))
  544. #pragma intfunc(attach_menu(a0,a1))
  545. #pragma intfunc(menu_item_address(a0,d0))
  546. #pragma intfunc(remove_menu(a0))
  547. #pragma intfunc(free_menu(a0))
  548.  
  549. #pragma intfunc(open_text_file(a0,d0,d1,d2))
  550. #pragma intfunc(read_text_line(a0))
  551. #pragma intfunc(close_text_file(a0))
  552.  
  553. #pragma intfunc(build_language_text_array(a0,d0))
  554. #pragma intfunc(get_language_text(a0,a1))
  555. #pragma intfunc(free_language_text_array(a0))
  556.  
  557. #pragma intfunc(change_mouse_pointer(a0,a1,d0))
  558. #pragma intfunc(restore_mouse_pointer(a0))
  559. #pragma intfunc(move_mouse_pointer(a0,d0,d1,d2))
  560.  
  561. #endif    /* INTUITION_SUPPORT */
  562.